import os
from core.rest_client import RestClient
from common.read_data import data

# 定义基础路径常量，用于后续文件路径的拼接，增加代码的可读性和可维护性
BASE_PATH = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))

# 定义一个类，继承RestClient类，并定义一些接口方法
# 拼接配置文件的完整路径，以便于加载配置信息，这里选择setting.ini作为配置文件名
data_file_path = os.path.join(BASE_PATH, "config", "setting.ini")

# 从配置文件中加载api根url，用于后续的api调用，此处说明了配置文件的作用和结构
api_root_url = data.load_ini(data_file_path)["host"]["api_root_url"]


class User(RestClient):

# 定义一个构造方法，继承RestClient类的构造方法，并传入api根url作为参数
    def __init__(self, api_root_url, **kwargs):
        super(User, self).__init__(api_root_url, **kwargs)

    def list_all_users(self, **kwargs):
        return self.get("/users", **kwargs)

    def list_one_user(self, username, **kwargs):
        return self.get("/users/{}".format(username), **kwargs)

    def register(self, **kwargs):
        return self.post("/register", **kwargs)

    def login(self, **kwargs):
        return self.post("/login", **kwargs)

    def update(self, user_id, **kwargs):
        return self.put("/update/user/{}".format(user_id), **kwargs)

    def delete(self, name, **kwargs):
        return self.post("/delete/user/{}".format(name), **kwargs)


user = User(api_root_url)